#include <Wire.h>
#include <U8g2lib.h>

// 根据你的屏幕尺寸选择合适的定义，这里以128x64为例
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// 创建U8g2对象，使用I2C通信方式
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
const char* text = "根据你的屏幕尺寸选择合适的定义，这里以128x64为例";
const int line_height = 15; // 每行的高度
const int max_chars_per_line = 8; // 每行最多显示的字符数

void setup() {
  // 初始化I2C通信
  Wire.begin(7, 8); // 指定SDA和SCL引脚

  // 初始化U8g2库
  u8g2.begin();
  u8g2.enableUTF8Print();  // enable UTF8 support for the Arduino print() function
  // 显示文本
  u8g2.clearBuffer(); // 清除缓冲区
  // u8g2.setFont(u8g2_font_wqy12_t_gb2312); // 设置字体

}

void loop() {
  // 主循环无需执行任何操作
  u8g2.setFont(u8g2_font_wqy12_t_gb2312);  
  u8g2.setFontDirection(0);
  u8g2.firstPage();
  for (int start = 0; start < strlen(text); start += max_chars_per_line) {
    u8g2.clearBuffer(); // 清除缓冲区
    for (int line = 0; line < 4 && start + line * max_chars_per_line < strlen(text); line++) {
      int pos = start + line * max_chars_per_line;
      u8g2.setCursor(0, (line + 1) * line_height);
      u8g2.print(text + pos);
    }
    u8g2.sendBuffer(); // 将缓冲区内容发送到屏幕
    delay(1000); // 暂停1秒
  }
}